#include <stdlib.h>
#include "lifo.h"

using namespace nbds;

void check(bool test) {
	if (!test)
		exit(1);
}

int main() {
	lifo<int> l;

	check(l.is_empty());

	l.push(1);
	l.push(2);
	l.push(3);

	check(!l.is_empty());
	check(l.pop() == 3);

	l.push(4);

	check(l.pop() == 4);
	check(l.pop() == 2);
	check(l.pop() == 1);

	check(l.is_empty());

	lifo<int*> k;
	int a, b, c, d;

	check(k.is_empty());

	k.push(&a);
	k.push(&b);
	k.push(&c);

	check(!k.is_empty());
	check(k.pop() == &c);

	k.push(&d);

	check(k.pop() == &d);
	check(k.pop() == &b);
	check(k.pop() == &a);

	check(k.is_empty());
}
